Method for cache replacement of web documents

ABSTRACT

A method for determining the priority of documents in a web cache. The present invention incorporates the document size and the frequency of file access in determining which documents to keep in the cache and which documents to replace. The priority of a document is determined using a ratio of the frequency of access of the document raised to a first value to the size of the document raised to a second value, wherein the first value and the second value are rational numbers other than one. In one embodiment, the first value is greater than one and the second value is less than one. In another embodiment, the age of the document is also considered in determining the priority of a document. In the present embodiment, the ratio is added to a clock value, wherein the clock value is a running counter associated with the document starting at the time the document was first stored in the web cache.

FIELD OF INVENTION

[0001] The present invention relates to the field of computer systems. Specifically, the present invention relates to a method of prioritizing documents in a web cache for efficient replacement.

BACKGROUND OF THE INVENTION

[0002] A web cache is a computer system located at the client, at the server, or at the network that keeps copies of the most-recently requested web pages in memory or on disk in order to speed up retrieval. Document caching is used to improve web performance. If a user requests a page that has already been stored in the cache, it is retrieved locally rather than from the Internet, thus resulting in faster file retrieval. A web cache has a limited amount of memory in which to store web pages. As a result, documents in the web cache must be periodically replaced with more popular documents.

[0003] An efficient cache replacement policy keeps popular documents in the cache and replaces rarely used ones. Many replacement policies for web caches have been proposed and are currently in use. Some of them are quite simple and easy to implement, while others are heavily parameterized or have aspects that do not allow for an efficient implementation (thus they can exhibit good results that serve as theoretical bounds on the best practically achievable performance). Two essential features distinguish web caching from conventional caching in general computer systems:

[0004] The HTTP protocol supports whole file transfers, thus a web cache can satisfy a request only if the entire file is cached.

[0005] Documents stored in a web cache are of different sizes, while CPU and disk caches deal with uniform-size pages.

[0006] A key element to good web cache performance is an efficient cache replacement policy for determining which files should be removed from cache to store newly requested documents. Further improvements can be achieved when such a policy is combined with a decision about whether a document is worth caching at all.

[0007] One previously proposed cache replacement policy for web documents is the Least-Recently-Used (LRU) method. The LRU policy is based simply on a clocking function that determines the file in the web cache that is the least recently accessed file. This file is evicted from the web cache to make room for the new file.

[0008] Another previously proposed cache replacement policy for web documents is the Greedy-Dual-Size (GDS) method. The GDS policy incorporates document size, cost, and an elegant aging mechanism in the decision process, and exhibits better performance compared to the LRU policy. However, it does not account for the number of times the requested file has been accessed.

[0009] The GDS policy has been extended, taking into consideration the document frequency, resulting in the Greedy-Dual-Frequency (GDF) policy, which considers a document's frequency plus the aging mechanism, and the Greedy-Dual-Frequency-Size (GDFS) policy, which also considers a document's size.

[0010] The typical measure of web cache efficiency is the file hit ratio: the fraction of times (over all accesses) the file was found in the cache. Since files are of different size, a complementary metric is also important, the byte hit ratio: the fraction of “bytes” returned from the cache among all the bytes accessed. While the GDFS policy achieves the best file hit ratio, it yields a modest byte hit ratio. Alternatively, the GDF policy results in the best byte hit ratio at the price of a worse file hit ratio.

[0011] Accordingly, a need exists for a more efficient replacement policy for a web cache. A need exists for a web replacement policy that allows for the optimization of both the file and the byte hit ratio. Specifically, a need exits for an efficient web cache replacement policy that allows to emphasize ( or de-emphasize) either the size or frequency (or both) parameters.

SUMMARY OF THE INVENTION

[0012] A method for determining the priority of a file in a web cache for use in a web cache replacement policy is described. The present invention provides a more efficient replacement policy for a web cache. The present invention provides a web replacement policy that allows for the optimization of both the file hit ratio and the byte hit ratio. The present invention allows for either the size or frequency (or both) parameters to be emphasized or de-emphasized, producing a more efficient web cache policy.

[0013] The present invention incorporates the document size and the frequency of file access in determining which documents to keep in the cache and which documents to replace. The priority of a document is determined using a ratio of the frequency of access of the document raised to a first value to the size of the document raised to a second value, wherein the first value and the second value are rational numbers other than one. Setting the values of the first value or the second value as greater than one emphasizes the role of the associated parameter. Similarly, setting the values of the first value or the second value as less than one de-emphasizes the role of the associated parameter. In one embodiment, the first value is greater than one and the second value is less than one.

[0014] In another embodiment, the age of the document is also considered in determining the priority of a document. In the present embodiment, the ratio is added to a clock value, wherein the clock value is a running counter associated with the document starting at the time the document was first stored in the web cache. In one embodiment, the clock value can be set to any monotonically increasing function to accommodate different aging mechanisms.

[0015] In one embodiment, the priority is determined by adding the ratio, a clock value, and the frequency of access. In another embodiment, the priority is determined by adding the ratio, a clock value, and the frequency of access, wherein the frequency raised to a first value equals one.

[0016] The present invention is a generalized method for assigning priority values to documents stored in a web cache. The priority value is used to determine which document or documents are to be replaced when new documents are added to the web cache. The present invention allows for the balancing of the emphasis of the frequency of access or document size. The present invention also allows for the design of faster or slower aging mechanisms. The present invention operates to define the family of web replacement policies balancing the impact of size and frequency of access such that both parameters can be optimized.

[0017] These and other objects and advantages of the present invention will become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawings figures.

BRIEF DESCRIPTION OF THE DRAWINGS

[0018] The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:

[0019]FIG. 1 illustrates an exemplary computer system platform upon which embodiments of the present invention may be practiced.

[0020]FIG. 2 is a block diagram of an exemplary computer system network upon which embodiments of the present invention may be implemented.

[0021]FIG. 3 shows a flowchart diagram of a process for determining the priority of a file in a web cache in accordance with one embodiment of the present invention.

[0022]FIG. 4 shows a flowchart diagram of a process for determining the priority of a file in a web cache incorporating a clocking mechanism in accordance with one embodiment of the present invention.

[0023]FIGS. 5A and 5B show a flowchart diagram of process for replacement of files in a web cache in accordance with one embodiment of the present invention.

DETAILED DESCRIPTION

[0024] In the following detailed description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are not described in detail in order to avoid obscuring aspects of the present invention.

[0025] Some portions of the detailed descriptions which follow are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer executed step, logic block, process, etc., is here and generally conceived to be a self-consistent sequence of steps of instructions leading to a desired result. The steps are those requiring physical manipulations of data representing physical quantities to achieve tangible and useful results. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers or the like.

[0026] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “requesting”, “determining”, “serving”, “adding”, “performing”, “storing” or the like, refer to the actions and processes of a computer system, or similar electronic computing device. The computer system or similar electronic device manipulates and transforms data represented as electronic quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.

[0027] Refer now to FIG. 1 which illustrates an exemplary computer system 100 upon which embodiments of the present invention may be practiced. In general, computer system 100 comprises bus 110 for communicating information, processor 101 coupled with bus 110 for processing information and instructions, random access (volatile) memory (RAM) 102 coupled with bus 110 for storing information and instructions for processor 101, read-only (non-volatile) memory (ROM) 103 coupled with bus 110 for storing static information and instructions for processor 101, data storage device 104 such as a magnetic or optical disk and disk drive coupled with bus 110 for storing information and instructions, an optional user output device such as display device 105 coupled to bus 110 for displaying information to the computer user, an optional user input device such as alphanumeric input device 106 including alphanumeric and function keys coupled to bus 110 for communicating information and command selections to processor 101, and an optional user input device such as cursor control device 107 coupled to bus 110 for communicating user input information and command selections to processor 101. Furthermore, an optional input/output (I/O) device 108 is used to couple computer system 100 onto, for example, a network.

[0028] Display device 105 utilized with computer system 100 may be a liquid crystal device, cathode ray tube, or other display device suitable for creating graphic images and alphanumeric characters recognizable to the user. Cursor control device 107 allows the computer user to dynamically signal the two-dimensional movement of a visible symbol (pointer) on a display screen of display device 105. Many implementations of the cursor control device are known in the art including a trackball, mouse, joystick or special keys on alphanumeric input device 106 capable of signaling movement of a given direction or manner of displacement. It is to be appreciated that the cursor control 107 also may be directed and/or activated via input from the keyboard using special keys and key sequence commands. Alternatively, the cursor may be directed and/or activated via input from a number of specially adapted cursor directing devices.

[0029]FIG. 2 is a block diagram of an exemplary computer system network upon which embodiments of the present invention may be implemented. Computer system network 200 comprises clients 210 a, 210 b, and 210 c, server 220, remote location 230, and Intranet/internet 240. In one embodiment, clients 210 a, 210 b, and 210 c, through server 220, communicate with Intranet/internet 240.

[0030] Clients 210 a, 210 b, and 210 c can be any number of electronic computing devices. In one embodiment, clients 210 a, 210 b, and 210 c are computer system with web-browsing capabilities. It should be appreciated that there can be any number of client devices, and that clients 210 a, 210 b, and 210 c are exemplary in nature. In one embodiment, any combination of clients 210 a, 210 b, and 210 c comprise web cache 250.

[0031] Server 220 may be a web server or a proxy server. In one embodiment, server 220 comprises web cache 250. In another embodiment, web cache 250 resides in remote location 230 of computer system network 200.

[0032] It should be appreciated that the possible location of the web cache can be at client 210 a, 210 b, or 210 c, at server 220, or at remote location 230 in the network.

[0033]FIG. 3 shows a flowchart diagram of a process 300 for determining the priority of a file in a web cache in accordance with one embodiment of the present invention. In one embodiment, process 300 is performed on every file in a web cache. In another embodiment, process 300 is performed on a file after its most recent access. As such, the priority assigned to a file is updated each time the file is accessed.

[0034] At step 310, process 300 begins. At step 320, the number of times the file has been accessed since it was saved in the web cache is determined. The number of accesses is the frequency of file access.

[0035] At step 330, the number of bytes comprising the file is determined. The number of bytes is the size of the file.

[0036] At step 340, the priority is determined by using the ratio of the frequency raised to a first value to the size raised to a second value, wherein the first value and the second value are rational numbers other than one. Setting the first value or second value as greater than one emphasizes the role of the associated parameter. Likewise, setting the first value or second value as less than one de-emphasizes the role of the associated parameter. In a preferred embodiment, the first value is greater than one (e.g., 2, 5, 10) and the second value is less than one (e.g., 0.1, 0.3, 0.5).

[0037] At step 350, process 300 ends for a particular file. It should be appreciated, as previously described, that process 300 is performed on every file in the web cache each time it is accessed. The priority for each file is used to determine which files are replaced in a web cache to make room for new files (see process 500, infra). $\begin{matrix} {{\Pr (f)} = \frac{{{Fr}(f)}^{\alpha}}{{{Size}(f)}^{\beta}}} & {{Equation}\quad 1} \end{matrix}$

[0038] Equation 1 is a representation of process 300 of FIG. 3, wherein Pr(f) is the priority of the file, Fr(f) is the number of times the file has been accessed since it was stored in the web cache, Size(f) is the number of bytes comprising the file, a is a rational number other than one; and β is a rational number other than one. In one embodiment, α is greater than one; and β is less than one.

[0039]FIG. 4 shows a flowchart diagram of a process 400 for determining the priority of a file in a web cache incorporating a clocking mechanism in accordance with one embodiment of the present invention. In one embodiment, process 400 is performed on every file in a web cache. In another embodiment, process 400 is performed on a file after its most recent accessing. As such, the priority assigned to a file is updated each time the file is accessed.

[0040] At step 410, process 400 begins. At step 420, the number of times the file has been accessed since it was saved in the web cache is determined. The number of accesses is the frequency of file access.

[0041] At step 430, the number of bytes comprising the file is determined. The number of bytes is the size of the file.

[0042] At step 440, the priority is determined by adding a clock value to the ratio of the frequency raised to a first value to the size raised to a second value, wherein the first value and the second value are rational numbers other than one. Setting the first value or second value as greater than one emphasizes the role of the associated parameter. Likewise, setting the first value or second value as less than one de-emphasizes the role of the associated parameter. In a preferred embodiment, the first value is greater than one (e.g., 2, 5, 10) and the second value is less than one (e.g., 0.1, 0.3, 0.5).

[0043] In one embodiment, the clock value is a running queue clock that starts at zero and is updated, for each replaced file, to its priority in the queue. In one embodiment, the clock value can be set to any monotonically increasing function to accommodate different aging mechanisms. Operating a faster increasing aging mechanism leads to a replacement policy where age has a greater impact than size or frequency.

[0044] At step 450, process 400 ends for a particular file. It should be appreciated, as previously described, that process 400 is performed on every file in the web cache each time it is accessed. The priority for each file is used to determine which files are replaced in a web cache to make room for new files (see process 500, infra). $\begin{matrix} {{\Pr (f)} = {{Clock} + \frac{{{Fr}(f)}^{\alpha}}{{{Size}(f)}^{\beta}}}} & {{Equation}\quad 2} \end{matrix}$

[0045] Equation 2 is a representation of process 400 of FIG. 4, wherein Pr(f) is the priority of the file, Clock is a running counter associated with the file starting at the time said file was stored in said web cache, Fr(f) is the number of times the file has been accessed since it was stored in the web cache, Size(f) is the number of bytes comprising the file, α is a rational number other than one; and β is a rational number other than one. In one embodiment, α is greater than one; and β is less than one. $\begin{matrix} {{\Pr (f)} = {{Clock} + {{Fr}(f)} + \frac{{{Fr}(f)}^{\alpha}}{{{Size}(f)}^{\beta}}}} & {{Equation}\quad 3} \end{matrix}$

[0046] Equation 3 represents a useful extension of Equation 2. $\begin{matrix} {{\Pr (f)} = {{Clock} + {{Fr}(f)} + \frac{1}{{{Size}(f)}^{\beta}}}} & {{Equation}\quad 4} \end{matrix}$

[0047] Equation 4 represents another useful extension of Equation 2. $\begin{matrix} {{Clock} = {({int})\left( {\max\limits_{i = 1}^{k}{\Pr \left( f_{i} \right)}} \right)}} & {{Equation}\quad 5} \end{matrix}$

[0048] Equation 5 represents an embodiment of the present invention where the clock value is computed as an integer part of the evicted document priority.

[0049]FIGS. 5A and 5B show a flowchart diagram of a process 500 for replacement of files in a web cache in accordance with one embodiment of the present invention.

[0050] Referring first to FIG. 5A, at step 505, process 500 begins. At step 510, a file is requested from the web cache. Each file in the web cache has a priority, wherein the priority is previously determined by a process for determining the priority of a file in a web cache. (e.g., process 300 of FIG. 3 or process 400 of FIG. 4).

[0051] At step 515, it is determined whether the requested file is in the web cache. If the file is in the web cache, as shown at step 520, the file is served out of cache.

[0052] At step 525, the priority of the requested file is updated by process 300 of FIG. 3 or process 400 of FIG. 4. In one embodiment, the clock value does not change, the frequency is increased by one, the priority is updated using process 300 or process 400, and the file is moved accordingly in the queue.

[0053] At step 530, process 500 stops as there is no need to replace any files in the web cache because the requested file was in the web cache.

[0054] If the requested file is not in the web cache, it must be determined whether or not to cache the file. To perform this determination, as shown at step 535, the priority of the requested file is calculated where the frequency is set to one, the priority is calculated according to process 300 of FIG. 3 or process 400 of FIG. 4, and the file is enqueued accordingly.

[0055] In one embodiment of, as shown at step 540, the number of bytes (e.g., size) comprising the requested file is added to the Used size, which is the current size of the web cache (e.g., the number of bytes currently in stored in the web cache), resulting in a Proposed size of the web cache (e.g., the number of bytes in the web cache if the requested file is added to the web cache).

[0056] With reference now to FIG. 5B, at step 545, it is determined whether the Proposed size is greater than the Total size, wherein the Total size is the maximum size of the web cache (e.g., the maximum number of bytes that can be stored in the web cache).

[0057] If the Proposed size is not greater than the Total size of the web cache, as shown at step 550, the requested file is added to the web cache. At step 555, process 500 ends because there is no need to replace any files currently in the web cache.

[0058] If the Proposed size is greater than the Total size of the web cache, as shown at step 560, the requested file does not fit in the cache, so files must be evicted. In one embodiment, the file with the lowest priority, as calculated previously, is evicted.

[0059] At step 565, the Used size of the web cache is recalculated, accounting for the eviction of the file of lowest priority. Process 500 then returns to step 540 of FIG. 5A. Steps 540 through 565 are repeated until the proposed size is not greater than the maximum size, as shown at step 550. In another embodiment, upon a file f being requested, the web cache replacement policy is as follows:

[0060] If the request for f is a hit, f is served out of cache and:

[0061] 1. Used and Clock do not change, wherein Used represents the number of bytes stored in the web cache and Clock represents the clock value;

[0062] 2. Fr(f) is increased by one, wherein Fr(f) represents the frequency of access of the requested file; and

[0063] 3. Pr(f) is updated using Equation 1 or Equation 2 and f is moved accordingly in the queue, wherein Pr(f) represents the priority of the file.

[0064] If the request for f is a miss, it must be determined whether to cache f or not. To perform this determination:

[0065] a) Fr(f) is set to one;

[0066] b) Pr(f) is computed using Equation 1 or Equation 2 and f is enqueued accordingly; and

[0067] c) Used is increased by Size(f), wherein Size(f) represents the size of the requested file.

[0068] Then, one of the following two situations takes place:

[0069] a) If Used≦Total, file f is cached, completing the updates, wherein Total represents the maximum size of the web cache.

[0070] b) If Used>Total, not all files fit in the cache. First, the smallest set {f₁, f₂, . . . f_(k)} of files to evict which have the lowest priority are identified, and Used—Σ_(i=1) ^(k)Size(ƒ_(i))≦Total is satisfied. Then:

[0071] a) If f is not among f₁, f₂, . . . f_(k):

[0072] b) Clock is set to max_(i=1) ^(k)Pr(ƒ_(i));

[0073] c) Used is decreased by Σ_(i=1) ^(k)Size(ƒ_(i));

[0074] d) f₁,f₂, . . . f_(k) are evicted; and f is cached.

[0075] b) If f is instead among f₁, f₂, . . . f_(k), it is simply not cached and removed from the priority queue, while none of the files already in the cache is evicted. This happens when the value of Pr(f) is so low that it would put f (if cached) among the first candidates for replacement (e.g., when the file size is very large—thus the proposed procedure will automatically limit the cases when such files are cached.

[0076] The preferred embodiment of the present invention, a method for determining the priority of a file in a web cache, is thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims. 

What is claimed is:
 1. A method for determining the priority of a file in a web cache comprising the computer-implemented steps of: a) determining a frequency based on how many times said file has been accessed since it was stored in said web cache; b) determining a size based on how many bytes comprise said file; and c) determining said priority using a ratio of said frequency raised to a first value to said size raised to a second value, wherein said first value and said second value are rational numbers other than one.
 2. The method as recited in claim 1 wherein said priority is determined by adding said ratio to a clock value, wherein said clock value is a running counter associated with said file, said clock value starting at the time said file was stored in said web cache.
 3. The method as recited in claim 2 wherein said priority is determined by adding said ratio, said clock value, and said frequency.
 4. The method as recited in claim 3 wherein said frequency raised to said first value equals one such that said ratio is one to size raised to a second value.
 5. The method as recited in claim 2 wherein said clock value can be set to any monotonically increasing function to accommodate different aging mechanisms.
 6. The method as recited in claim 1 wherein said first value is greater than one.
 7. The method as recited in claim 1 wherein said second value is less than one.
 8. A computer-usable medium having computer-readable program code embodied therein for causing a computer system to perform the steps of: a) determining a frequency based on how many times said file has been accessed since it was stored in said web cache; b) determining a size based on how many bytes comprise said file; and c) determining said priority using a ratio of said frequency raised to a first value to said size raised to a second value, wherein said first value and said second value are rational numbers other than one.
 9. The computer-usable medium as recited in claim 8 wherein said priority is determined by adding said ratio to a clock value, wherein said clock value is a running counter associated with said file, said clock value starting at the time said file was stored in said web cache.
 10. The computer-usable medium as recited in claim 9 wherein said priority is determined by adding said ratio, said clock value, and said frequency.
 11. The computer-usable medium as recited in claim 10 wherein said frequency raised to said first value equals one such that said ratio is one to size raised to a second value.
 12. The computer-usable medium as recited in claim 9 wherein said clock value can be set to any monotonically increasing function to accommodate different aging mechanisms.
 13. The method as recited in claim 8 wherein said first value is greater than one.
 14. The method as recited in claim 8 wherein said second value is less than one.
 15. A method for replacement of files in a web cache comprising the computer-implemented steps of: a) requesting a file from said web cache, said web cache comprising at least one file, said web cache having a total size and a used size, wherein said total size is the number of bytes said web cache can store, wherein a used size is the number of bytes currently being stored by said web cache, each file having a priority, said priority determined by the steps of: a1) determining a frequency based on how many times said cached file has been accessed since it was stored in said web cache; a2) determining a size based on how many bytes comprise said cached file; and a 3) determining said priority using a ratio of said frequency raised to a first value to said size raised to a second value, wherein said first value and said second value are rational numbers other than one; b) provided said file is located in said web cache, serving said file out of said web cache and updating said priority; c) provided said file is not located in said web cache, determining whether to store said file in said web cache by performing the steps of: c1) adding said file size of said file to said used size, resulting in a first value; c2) provided said first value is less than said total size, adding said file to said web cache; c3) provided said first value is greater than said total size, removing at least one of said files according to said priority until said used size is less than said total size; and d) storing said file into said web cache.
 16. The method as recited in claim 15 wherein said priority is determined by adding said ratio to a clock value, wherein said clock value is a running counter associated with said file, said clock value starting at the time said file was stored in said web cache.
 17. The method as recited in claim 16 wherein said priority is determined by adding said ratio, said clock value, and said frequency.
 18. The method as recited in claim 17 wherein said frequency raised to said first value equals one such that said ratio is one to size raised to a second value.
 19. The method as recited in claim 16 wherein said clock value can be set to any monotonically increasing function to accommodate different aging mechanisms.
 20. The method as recited in claim 15 wherein said first value is greater than one.
 21. The method as recited in claim 15 wherein said second value is less than one.
 22. A computer-usable medium having computer-readable program code embodied therein for causing a computer system to perform the steps of: a) requesting a file from said web cache, said web cache comprising at least one file, said web cache having a total size and a used size, wherein said total size is the number of bytes said web cache can store, wherein a used size is the number of bytes currently being stored by said web cache, each file having a priority, said priority determined by the steps of: a1) determining a frequency based on how many times said cached file has been accessed since it was stored in said web cache; a2) determining a size based on how many bytes comprise said cached file; and a3) determining said priority using a ratio of said frequency raised to a first value to said size raised to a second value, wherein said first value and said second value are rational numbers other than one; b) provided said file is located in said web cache, serving said file out of said web cache and updating said priority; c) provided said file is not located in said web cache, determining whether to store said file in said web cache by performing the steps of: c1) adding said file size of said file to said used size, resulting in a first value; c2) provided said first value is less than said total size, adding said file to said web cache; c3) provided said first value is greater than said total size, removing at least one of said files according to said priority until said used size is less than said total size; and d) storing said file into said web cache.
 23. The computer-usable medium as recited in claim 22 wherein said priority is determined by adding said ratio to a clock value, wherein said clock value is a running counter associated with said file, said clock value starting at the time said file was stored in said web cache.
 24. The computer-usable medium as recited in claim 23 wherein said priority is determined by adding said ratio, said clock value, and said frequency.
 25. The computer-usable medium as recited in claim 24 wherein said frequency raised to said first value equals one.
 26. The computer-usable medium as recited in claim 23 wherein said clock value can be set to any monotonically increasing function to accommodate different aging mechanisms.
 27. The computer-usable medium as recited in claim 22 wherein said first value is greater than one.
 28. The computer-usable medium as recited in claim 22 wherein said second value is less than one.
 29. A method for determining the priority of a file in a web cache, wherein said priority is calculated according to ${{\Pr (f)} = \frac{{{Fr}(f)}^{\alpha}}{{{Size}(f)}^{\beta}}};$

wherein said Pr(f) is said priority of said file; wherein said Fr(f) is the number of times said file has been accessed since it was stored in said web cache; wherein said Size(f) is the number of bytes comprising said file; wherein said α is a rational number other than one; and wherein said β is a rational number other than one.
 30. The method as recited in claim 29 wherein said priority is calculated according to ${{\Pr (f)} = {{Clock} + \frac{{{Fr}(f)}^{\alpha}}{{{Size}(f)}^{\beta}}}};$

wherein said Clock is a running counter associated with said file, said Clock starting at the time said file was stored in said web cache.
 31. The method as recited in claim 30 wherein said Clock can be set to any monotonically increasing function to accommodate different aging mechanisms.
 32. The method as recited in claim 29 wherein said α is greater than one.
 33. The method as recited in claim 29 wherein said β is less than one. 